package logicBusiness;

import DAO.CertificadoDao;
import models.Certificado;
import java.util.List;
import javax.persistence.*;
import javax.swing.JTable;

public class CertificadoBL {

    private int ok = 0;
    CertificadoDao certificadodao;

    public int crearCertificado(Integer idcertificado, Integer documento_iddocumento,
            String nombrePer, Integer cedula, String ciudad, String periodo,
            Integer nMaterias, Integer total, String grado) {
        // find an user
        EntityManagerFactory emf =
                Persistence.createEntityManagerFactory("sischoolPU");
        EntityManager em = emf.createEntityManager();
        CertificadoDao dao = new CertificadoDao(em);
        em.getTransaction().begin();
        Certificado a = dao.crearCertificado(idcertificado, documento_iddocumento, nombrePer,
                cedula, ciudad, periodo, nMaterias, total, grado);
        em.getTransaction().commit();
        em.close(); //quitar cuando se tenga montado el serv
        emf.close();//quitar cuando se tenga montado el serv
        if (a == null) {
            ok = 0;
        } else if (a.getNombrePer().equals(nombrePer)) {
            ok = 1;
        }
        return ok;


    }

    public List obtenerListCertificado() {
        EntityManagerFactory emf =
                Persistence.createEntityManagerFactory("sischoolPU");
        EntityManager em = emf.createEntityManager();
        certificadodao = new CertificadoDao(em);
        em.getTransaction().begin();

        List lista = null;               //coleccion de objetos con atributos de preinscrito
        lista = (List) certificadodao.encontrarCertificado();
        em.close(); //quitar cuando se tenga montado el serv
        emf.close();//quitar cuando se tenga montado el serv

        return lista;
    }

    public Integer resultado() {
        int i = 0;
        EntityManagerFactory emf =
                Persistence.createEntityManagerFactory("sischoolPU");
        EntityManager em = emf.createEntityManager();
        CertificadoDao dao = new CertificadoDao(em);
        return i = dao.devolverId();
    }

    public void actualizarCertificado(JTable tablaentrada) {

        EntityManagerFactory emf =
                Persistence.createEntityManagerFactory("sischoolPU");
        EntityManager em = emf.createEntityManager();
        certificadodao = new CertificadoDao(em);

        for (int iterador = 0; iterador < tablaentrada.getRowCount(); iterador++) {

            if (tablaentrada.getValueAt(iterador, 5).equals("si") ||
                    tablaentrada.getValueAt(iterador, 5).equals("s") ||
                    tablaentrada.getValueAt(iterador, 5).equals("S") ||
                    tablaentrada.getValueAt(iterador, 5).equals("SI")) {
                System.out.println((Integer) tablaentrada.getValueAt(iterador, 0));
                certificadodao.ActualizarCertificado((Integer) tablaentrada.getValueAt(iterador, 0));
                //columna 0, columna con numero de identidad

            }

        }
        em.close(); //quitar cuando se tenga montado el serv
        emf.close();//quitar cuando se tenga montado el serv
    }

    public void borrarCertificado(Integer idcertificado) {
        // find an user
        EntityManagerFactory emf =
                Persistence.createEntityManagerFactory("sischoolPU");
        EntityManager em = emf.createEntityManager();
        CertificadoDao dao = new CertificadoDao(em);
        em.getTransaction().begin();
        dao.borrarCertificado(idcertificado);
        em.getTransaction().commit();
        em.close(); //quitar cuando se tenga montado el serv
        emf.close();//quitar cuando se tenga montado el serv

        //return ok;

    }

    public int encontrarCertificado(Integer idcertificado) {
        // find an user
        EntityManagerFactory emf =
                Persistence.createEntityManagerFactory("sischoolPU");
        EntityManager em = emf.createEntityManager();
        CertificadoDao dao = new CertificadoDao(em);
        Certificado a = dao.encontrarCertificado(idcertificado);
        em.close(); //quitar cuando se tenga montado el serv
        emf.close();//quitar cuando se tenga montado el serv
        if (a == null) {
            ok = 0;
        }
//        else if (a.getIdcertificado().equals(idcertificado)) {
//            ok = a.getIdcertificado();
//        }
        return ok;

    }

    public Certificado consultarCertificado(Integer idcertificado) {
        // find an user
        EntityManagerFactory emf =
                Persistence.createEntityManagerFactory("sischoolPU");
        EntityManager em = emf.createEntityManager();
        CertificadoDao dao = new CertificadoDao(em);
        Certificado a = dao.encontrarCertificado(idcertificado);
        em.close(); //quitar cuando se tenga montado el serv
        emf.close();//quitar cuando se tenga montado el serv

        return a;
    }

    public int actualizarCertificado(Integer idcertificado, Integer documento_iddocumento,
            String nombrePer, Integer cedula, String ciudad, String periodo, Integer nMaterias,
            Integer total, String grado) {
        // find an user
        EntityManagerFactory emf =
                Persistence.createEntityManagerFactory("sischoolPU");
        EntityManager em = emf.createEntityManager();
        CertificadoDao dao = new CertificadoDao(em);
        em.getTransaction().begin();
        Certificado a = dao.actualizarCertificado(idcertificado, documento_iddocumento,
                nombrePer, cedula, ciudad, periodo, nMaterias, total, grado);
        em.getTransaction().commit();

        em.close(); //quitar cuando se tenga montado el serv
        emf.close();//quitar cuando se tenga montado el serv
        if (a == null) {
            ok = 0;
        }
//        else if (a.getIdcertificado().equals(idcertificado)) {
//            ok = 1;
//        }
        return ok;

    }

    public List<Certificado> findAll() {
        EntityManagerFactory emf =
                Persistence.createEntityManagerFactory("sischoolPU");
        EntityManager em = emf.createEntityManager();
        CertificadoDao dao = new CertificadoDao(em);
        List<Certificado> a = dao.findAll();
        em.close(); //quitar cuando se tenga montado el serv
        emf.close();//quitar cuando se tenga montado el serv
        /*if (a == null) {
        ok = 0;
        } else if (a.getId().equals(idAula)) {
        ok = 1;
        }*/
        return a;
    }
}
